function ajax(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            const random=Math.floor(Math.random()*10)
            if(random>6){
                console.log('成功',random);
                resolve('成功')
            }else{
                console.log('失败',random);
                reject('失败')
            }
        },1000)
    })
}
//原理：打造一个retry函数，接收请求函数，和最大重试次数，
//1. 先执行一次请求函数，如果成功则直接返回结果
//2. 如果失败则判断重试次数是否大于1，如果大于1则递归调用retry函数，重试次数减1
//3. 如果重试次数为0则直接返回失败
function retry(fn,count){
    return new Promise((resolve,reject)=>{
        fn().then(res=>{
            resolve(res)
        }).catch(err=>{
            if(count>1){
                retry(fn,count-1).then(res=>{//递归过程中会resolve成功的结果，所以要then接收
                    resolve(res)
                }).catch(err=>{
                    reject(err)
                })
            }else{
                reject(err)
            }
        })
    })
}
//限定最多重新发送3次
retry(ajax,3).then(res=>{//成功的结果
    console.log(res);
}).catch(err=>{
    console.log(err);
})

